#ifndef _KOMUNIKACJA_H_
#define _KOMUNIKACJA_H_
#include "motor.h"
#include "usart.h"
#include "opcje.h"

inline void ObslugaZapytan(unsigned char* buff, unsigned char i)
{
	if (buff[0] == '?')
	{
		if(buff[1] != 'D')
		{
			USART_write('.');
			USART_write(buff[1]);
		}
		switch(buff[1])
		{
			case 'T':
				USART_write(TrybPracy);
				break;
			case 'D':
				LED_Alarm();
				#ifdef DozwolonaStalaPredkosc
				USART_write('.');
				USART_write('D');
				USART_write(StalaPredkosc);
				#endif
				#ifdef DozwolonaLosowaJazda
				USART_write('.');
				USART_write('D');
				USART_write(LosowaJazda);
				#endif
				#ifdef DozwolonyDuzyTor
				USART_write('.');
				USART_write('D');
				USART_write(DuzyTor);
				#endif
				#ifdef DozwolonaGwiazda
				USART_write('.');
				USART_write('D');
				USART_write(Gwiazda);
				#endif
				LED_Alarm();
				break;
			case 'P':
				USART_write(Predkosc);
				break;
			case 'Z':
				USART_write(Zezwolenie);
				break;
			case 'O':
				USART_write(dOpoznienie);
				break;
			case 'J':
				USART_write(CzasJazdy);
				break;
			case 'j':
				USART_write(CzasJazdyPlusMinus);
				break;
			case 'S':
				USART_write(CzasPostoju);
				break;
			case 's':
				USART_write(CzasPostojuPlusMinus);
				break;
			default:
				break;
		};
	}
}

inline void ObslugaPolecen(unsigned char* buff, unsigned char i)
{
	if (buff[0] == '!' || buff[0] == '.')
	{
		switch(buff[1])
		{
			case 'T':
				switch(buff[2])
				{
					case 'S':
						TrybPracy = StalaPredkosc;
						break;
					case 'L':
						TrybPracy = LosowaJazda;
						break;
					case 'M':
						TrybPracy = DuzyTor;
						break;
					case 'G':
						TrybPracy = Gwiazda;
						break;
					default:
						return;
				};
				if (buff[0] == '!') OPCJE_zapiszTrybPracy(TrybPracy);
				break;
			case 'P':
				Predkosc = buff[2];
				MOTOR_speed();
				if (buff[0] == '!') OPCJE_zapiszPredkosc(buff[2]);
				break;
			case 'Z':
				Zezwolenie = buff[2];
				if (buff[0] == '!') OPCJE_zapiszZezwolenieNaStart(buff[2]);
				break;
			case 'O':
				dOpoznienie = buff[2];
				if (buff[0] == '!') OPCJE_zapiszZmianaOpoznienia(buff[2]);
				break;
			case 'o':
				dOpoznieniePlusMinus = buff[2];
				if (buff[0] == '!') OPCJE_zapiszZmianaOpoznieniaPlusMinus(buff[2]);
				break;
			case 'J':
				CzasJazdy = buff[2];
				if (buff[0] == '!') OPCJE_zapiszCzasJazdy(buff[2]);
				break;
			case 'j':
				if (buff[2] > CzasJazdy) buff[2] = CzasJazdy;
				CzasJazdyPlusMinus = buff[2];
				if (buff[0] == '!') OPCJE_zapiszCzasJazdyPlusMinus(buff[2]);
				break;
			case 'S':
				CzasPostoju = buff[2];
				if (buff[0] == '!') OPCJE_zapiszCzasPostoju(buff[2]);
				break;
			case 's':
				if (buff[2] > CzasPostoju) buff[2] = CzasPostoju;
				CzasPostojuPlusMinus = buff[2];
				if (buff[0] == '!') OPCJE_zapiszCzasPostojuPlusMinus(buff[2]);
				break;
			default:
				break;
		};
	}
}


#endif
